﻿using System;
using System.Collections.Generic;
using System.Text;

namespace App.Modelo.Bitacora
{
    public enum TipoCambio
    {
        Create,
        Update,
        Delete
    }

    public class RegistroCambio
    {
        public virtual Int64 Id { get; set; }
        public virtual Usuario Usuario { get; set; }
        public virtual DateTime Fecha { get; set; }

        public virtual ElementoAuditable Elemento { get; set; }
        public virtual int IdEntidad { get; set; }
        public virtual string ValorViejo { get; set; }
        public virtual string ValorNuevo { get; set; }

        public virtual TipoCambio Tipo { get; set; }


        public virtual string GetChangeHash()
        {
            return string.Join(",", new string[]{
                Usuario.Id.ToString(),
                Elemento.ToString(),
                ValorViejo,
                ValorNuevo,
                Tipo.ToString()
            });
                
        }
    }


    public class ElementoAuditable
    {
        public virtual string Entidad { get; set; }
        public virtual string Propiedad { get; set; }

        public override string ToString()
        {
            return Entidad + "/" + Propiedad;
        }
    }

    public class ElementoAuditableActivo
    {

        public virtual Int64 Id { get; set; }
        public virtual ElementoAuditable Elemento { get; set; }
        public virtual bool Desactivo { get; set; }
    }
}
